import Vue from 'vue'
import Vuex from 'vuex'
import state from './state.js'
import mutations from './mutations.js'
import getters from './getters.js'

Vue.use(Vuex)

// 插件：每当mutation被提交，插件的代码就会执行
// 这是一个方法，以store为参数
const cartPlugin = store => {
  store.subscribe((mutation, state) => {
    // 每当有mutation被提交了，就会执行这个方法
    // 在这里存localstorage，以后提交mutation，这个会自动提交localstorage，不用我们自己一次次手动提交
    localStorage.setItem('cart', JSON.stringify(state.cart))
  })
}

export default new Vuex.Store({
  plugins: [cartPlugin],
  state,
  mutations,
  getters,
  actions: {
  },
  modules: {
  }
})
